package com.itheima.day06_api_day01.develophomework;

import java.util.Arrays;
import java.util.Scanner;

public class Test03 {
    /*
    已知数组：String[ ] stus = {"111", "222","333","444","555","666"}，请设计程序，实现如下效果：
    //正常查找：
        请输入您要查找的人名：
        444
        444是系统中存储的第4个用户！

        //非正常查找：
        请输入您要查找的人名：
        000
        000不是系统中的用户！
     */
    public static void main(String[] args) {
        String[ ] stus = {"111", "222","333","444","555","666"};
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要查找的人名：");
        String str = sc.next();
       /* for (int i = 0; i < stus.length; i++) {
            if(str.equals(stus[i])){
                int res = Arrays.binarySearch(stus,str);
                System.out.println(str+"是系统中存储的第"+(res+1)+"个用户！");
                return;
            }
        }*/
        int index = method(stus, str);
        if(index != -1){
            System.out.println(str+"是系统中存储的第"+(index+1)+"个用户！");
            return;
        }
        System.out.println(str+"不是系统中的用户！");
    }
    // //手动编写二分法代码
    public static int method(String[] arr,String sc){
        //定义两个变量，表示要查找的范围。默认min = 0 ，max = 最大索引
        int min = 0;
        int max = arr.length-1;
        //循环查找 min <= max
        while(min <= max){
            //计算出中间位置 mid
            int mid = (min + max) / 2;
            //mid指向的元素 > number
            int s1 = Integer.parseInt(arr[mid]);
            int s2 = Integer.parseInt(sc);
            if(s1 > s2 ){
                max = mid-1;
            }else if(s1 < s2){
                min = mid+1;
            }else{
                return mid;
            }
        }
        return -1;
    }
}
